<?php

class Pa_model extends CI_Model
{

    function insert($row = array())
    {
        $this->db->insert('pacientes', $row);
        return $this->db->insert_id(); 
    }

    function find_dni($p_dni, $id_paciente)
    {
        $query = sprintf("select id_paciente from pacientes where p_dni='%s' and p_dni<>'' and p_dni<>0 and id_paciente<>%s", $p_dni, $id_paciente);
        $row = $this->db->query($query);
        return $row;
    }

    function find_historia_clinica($p_historia_clinica, $id_paciente)
    {
        $query = sprintf("select id_paciente from pacientes where p_historia_clinica='%s' and id_paciente<>%s ", $p_historia_clinica, $id_paciente);
        $row = $this->db->query($query);
        return $row;
    }

    function find_numero_afiliado($p_numero_afiliado, $id_paciente)
    {
        $query = sprintf("select id_paciente from pacientes where p_numero_afiliado='%s' and id_paciente<>%s ", $p_numero_afiliado, $id_paciente);
        $row = $this->db->query($query);
        return $row;
    }

    function find($id_paciente)
    {
        $query = sprintf("select * from pacientes where id_paciente=%s", $id_paciente);
        $row = $this->db->query($query);
        return $row;
    }

    //Esta es para buscar los datos del paciente en la ficha de paciente
    function find_paciente_ficha($id_paciente)
    {
        $query = sprintf("
            select 
            p.id_paciente,
            p_nombre,
            p_apellido,
            (YEAR(CURDATE()) - YEAR(p_fecha_nacimiento)) as p_fecha_nacimiento,
            p_dni,
            p_numero_afiliado,
            p_localidad,
            p_telefono,
            p_historia_clinica,
            os_nombre
            from
            pacientes as p
            inner join
            obras_sociales as os ON os.id_obra_social = p.id_obra_social
            where id_paciente=%s", $id_paciente);
        $row = $this->db->query($query);
        return $row;
    }

    function select()
    {
        $query = "select * from pacientes";
        $rows = $this->db->query($query);
        $rows = $rows->result_array();
        return $rows;
    }

    function select_buscar($p_nombre, $p_apellido, $p_dni, $p_historia_clinica, $os_nombre, $p_localidad, $c_fecha_cirugia_desde,$c_fecha_cirugia_hasta, $start, $end)
    {
        $where = "";

        $select_count = " select 
                        count(p.id_paciente) as cantidad         
                        from 
                        pacientes as p
                        inner join 
                        obras_sociales as os
                        on
                        os.id_obra_social = p.id_obra_social
                        left join
                        cirugias as ci
                        on 
                        p.id_paciente = ci.id_paciente

                    ";

        $select = "select
                p.id_paciente,
                p_historia_clinica,
                ci.id_cirugia,
                p_nombre,
                p_apellido,
                (YEAR(CURDATE())-YEAR(p_fecha_nacimiento)) as p_fecha_nacimiento,
                p_telefono,
                os_nombre,
                c_fecha_cirugia,
                p_localidad
                from 
                pacientes as p
                inner join 
                obras_sociales as os
                on
                os.id_obra_social = p.id_obra_social
                left join
                cirugias as ci
                on 
                p.id_paciente = ci.id_paciente";

        //Si no viene nada no pongo where
        if ($p_nombre == "" and $p_apellido == "" and $p_dni == "" and $p_historia_clinica == "" and $os_nombre == "" and $p_localidad == "" and $c_fecha_cirugia_desde== "" and $c_fecha_cirugia_hasta== "")
            $where = "";
        else
            $where = " where";

        $arg = "";

        if ($p_nombre != "")
        {
            $arg = " p_nombre='" . $p_nombre . "'";
        }
        if ($p_apellido != "")
        {
            if ($arg != "")
                $arg = $arg . " and p_apellido='" . $p_apellido . "'";
            else
                $arg = " p_apellido='" . $p_apellido . "'";
        }
        if ($p_dni != "")
        {
            if ($arg != "")
                $arg = $arg . " and p_dni='" . $p_dni . "'";
            else
                $arg = " p_dni='" . $p_dni . "'";
        }
        if ($p_historia_clinica != "")
        {
            if ($arg != "")
                $arg = $arg . " and p_historia_clinica='" . $p_historia_clinica . "'";
            else
                $arg = " p_historia_clinica='" . $p_historia_clinica . "'";
        }
        if ($os_nombre != "")
        {
            if ($arg != "")
                $arg = $arg . " and os_nombre='" . $os_nombre . "'";
            else
                $arg = $arg . " os_nombre='" . $os_nombre . "'";
        }
        if ($p_localidad != "")
        {
            if ($arg != "")
                $arg = $arg . " and p_localidad='" . $p_localidad . "'";
            else
                $arg = $arg . " p_localidad='" . $p_localidad . "'";
        }
        if ($c_fecha_cirugia_desde)
        {
            if ($arg != "")
                $arg = $arg . " and c_fecha_cirugia >='" . $c_fecha_cirugia_desde . "'";
            else
                $arg = $arg . " c_fecha_cirugia >= '" . $c_fecha_cirugia_desde . "'";
        }
        if ($c_fecha_cirugia_hasta)
        {
            if ($arg != "")
                $arg = $arg . " and c_fecha_cirugia <='" . $c_fecha_cirugia_hasta . "'";
            else
                $arg = $arg . " c_fecha_cirugia <= '" . $c_fecha_cirugia_hasta . "'";
        }

        $order = " order by id_paciente desc";

        $litmit = " limit " . $start . "," . $end . "";

        $group = " group by p.id_paciente";

        $query_final = $select . $where . $arg . $group . $order . $litmit;
        $query_final_count = $select_count . $where . $arg;

        $row_count = $this->db->query($query_final_count);
        $row_count = $row_count->row();
        $total_count = $row_count->cantidad;

        $rows = $this->db->query($query_final);
        $rows = $rows->result_array();

        $array_return = array(
            'total_count' => $total_count,
            'rows' => $rows
        );
        return $array_return;
    }

    function localidades_control($p_localidad)
    {
        $query = sprintf("select * from localidades where localidad='%s'", $p_localidad);
        $rows = $this->db->query($query);

        if ($rows->num_rows() == 0)
        {
            $query = sprintf("insert into localidades (localidad) values ('%s')", $p_localidad);
            $this->db->query($query);
        }
    }

    function pacientes_cirugias($id_paciente)
    {
        $query = sprintf('select id_cirugia,c_ojo,id_paciente from cirugias where id_paciente=%s', $id_paciente);
        $rows = $this->db->query($query);
        return $rows;
    }

    function update($id, $row = array())
    {
        $this->db->where('id_paciente', $id);
        $this->db->update('pacientes', $row);
    }

    function delete($id_paciente)
    {
        //Eliminar Paciente
        $query = sprintf("delete from pacientes where id_paciente=%s", $id_paciente);
        $this->db->query($query);
        $query = sprintf("delete from cirugias where id_paciente=%s",$id_paciente);
        $this->db->query($query);
    }

    function count()
    {
        $query = "select count(*) as cantidad from pacientes";
        $rows = $this->db->query($query);
        $rows = $rows->row();
        return $rows->cantidad;
    }

    //Encontrar el id_paciente cuando se manda en el formulario de cirugia
    //el la historia_clinica y el nombre del paciente, para luego guardar el id_paciente que es lo importante
    function find_id_paciente_by_his_cli($p_historia_clinica)
    {
        if(is_numeric($p_historia_clinica))
        {
            $p_historia_clinica=$p_historia_clinica;
        }
        else
        {
           $p_historia_clinica=0; 
        }
        
        $query = sprintf("select id_paciente from pacientes where p_historia_clinica=%s", $p_historia_clinica);
        $row = $this->db->query($query);
        return $row;
    }
    
    function find_paciente_nombre($id_paciente)
    {
        $query=sprintf("select p_nombre,p_apellido from pacientes where id_paciente=%s",$id_paciente);
        $row = $this->db->query($query);
        return $row;
    }
    
    function id_paciente_get_datos($id_paciente)
    {
        $query=sprintf("
            select p_nombre,p_apellido,os_nombre,p_numero_afiliado, p_historia_clinica 
            from 
            pacientes p
            inner join
            obras_sociales os
            on p.id_obra_social=os.id_obra_social
            where id_paciente=%s",$id_paciente);
        
        $row = $this->db->query($query);
        $row = $row->row_array();
        return $row;
    }

}

?>